{
 "cells": [
  {
   "cell_type": "code",
   "metadata": {
    "jupyter": {
     "is_executing": true
    }
   },
   "source": [
    "import numpy as np \n",
    "import math \n",
    "import pandas as pd \n",
    "pd.set_option('display.float_format',lambda x:'%.3f' % x)\n",
    "import matplotlib.pyplot as plt \n",
    "plt.style.use('ggplot')\n",
    "%matplotlib inline\n",
    "import seaborn as sns \n",
    "sns.set_palette('muted')\n",
    "sns.set_style('darkgrid')\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "import os \n",
    "os.chdir('F:/安装包/PPD-First-Round-Data-Updated/PPD-First-Round-Data-Update/')\n",
    "import lightgbm as lgb \n",
    "from lightgbm import plot_importance"
   ],
   "outputs": [],
   "execution_count": null
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入feature_processing处理过后的数据\n",
    "data = pd.read_csv('data1_process.csv',encoding='gb18030')\n",
    "periods_df = pd.read_csv('periods_feature.csv',encoding='gbk')\n",
    "rank_df = pd.read_csv('rank_feature.csv',encoding='gbk')\n",
    "update_info = pd.read_csv('update_feature.csv',encoding='gbk')\n",
    "log_df = pd.read_csv('log_info_feature.csv',encoding='gbk')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(49701, 237)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 合并衍生后的变量，data1不包含排序特征和periods衍生特征\n",
    "data1 = pd.merge(data,update_info,on='Idx',how='left')\n",
    "data1 = pd.merge(data1,log_df,on='Idx',how='left')\n",
    "data1.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(49701, 412)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# data2包含排序特征和periods衍生特征\n",
    "data2 = pd.concat([data1,rank_df,periods_df],axis=1)\n",
    "data2.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>feature</th>\n",
       "      <th>fea_importance</th>\n",
       "      <th>norm_importance</th>\n",
       "      <th>cum_importance</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>avg_log_timespan</td>\n",
       "      <td>221.000</td>\n",
       "      <td>0.018</td>\n",
       "      <td>0.018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>UserInfo_18</td>\n",
       "      <td>178.000</td>\n",
       "      <td>0.015</td>\n",
       "      <td>0.033</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>ThirdParty_Info_Period5_5</td>\n",
       "      <td>167.000</td>\n",
       "      <td>0.014</td>\n",
       "      <td>0.047</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ThirdParty_Info_Period4_15</td>\n",
       "      <td>164.000</td>\n",
       "      <td>0.014</td>\n",
       "      <td>0.061</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>ThirdParty_Info_Period2_5</td>\n",
       "      <td>163.000</td>\n",
       "      <td>0.014</td>\n",
       "      <td>0.074</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                      feature  fea_importance  norm_importance  cum_importance\n",
       "0            avg_log_timespan         221.000            0.018           0.018\n",
       "1                 UserInfo_18         178.000            0.015           0.033\n",
       "2   ThirdParty_Info_Period5_5         167.000            0.014           0.047\n",
       "3  ThirdParty_Info_Period4_15         164.000            0.014           0.061\n",
       "4   ThirdParty_Info_Period2_5         163.000            0.014           0.074"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_idx = data.Idx\n",
    "df1  =data1.drop(['Idx'],axis=1)# 删除Idx\n",
    "# 测试集训练集的划分\n",
    "train_fea = np.array(df1[df1['target'].notnull()][df1.sample_status=='train'].drop(['sample_status','target'],axis=1))\n",
    "test_fea = np.array(df1[df1.sample_status=='test'].drop(['sample_status','target'],axis=1))\n",
    "train_label = np.array(df1[df1['target'].notnull()][df1.sample_status=='train']['target']).reshape(-1,1)\n",
    "test_label = np.array(df1[df1.sample_status=='test']['target']).reshape(-1,1)\n",
    "\n",
    "\n",
    "fea_names = list(df1.drop(['sample_status','target'],axis=1).columns)# 特征名字存成列表\n",
    "feature_importance_values = np.zeros(len(fea_names)) # \n",
    "\n",
    "# 训练10个lightgbm，并对10个模型输出的feature_importances_取平均\n",
    "for _ in range(10):\n",
    "    model = lgb.LGBMClassifier(n_estimators=400,learning_rate=0.05,n_jobs=-1,verbose = -1)\n",
    "    model.fit(train_fea,train_label,eval_metric='auc',verbose = 30)\n",
    "    #model.fit(train_fea,train_label,eval_metric='auc',eval_set = [(test_fea, test_label)],early_stopping_rounds=100,verbose = -1)\n",
    "    feature_importance_values += model.feature_importances_/10\n",
    "\n",
    "# 将feature_importance_values存成临时表\n",
    "fea_imp_df1 = pd.DataFrame({'feature':fea_names,\n",
    "                           'fea_importance':feature_importance_values})\n",
    "fea_imp_df1 = fea_imp_df1.sort_values('fea_importance',ascending=False).reset_index(drop=True)\n",
    "fea_imp_df1['norm_importance'] = fea_imp_df1['fea_importance']/fea_imp_df1['fea_importance'].sum() # 特征重要性value的归一化\n",
    "fea_imp_df1['cum_importance'] = np.cumsum(fea_imp_df1['norm_importance'])# 特征重要性value的累加值\n",
    "fea_imp_df1.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 特征重要性可视化\n",
    "plt.figure(figsize=(16,5))\n",
    "plt.rcParams['font.sans-serif']=['Microsoft YaHei']\n",
    "plt.subplot(1,2,1)\n",
    "plt.title('特征重要性')\n",
    "sns.barplot(data=fea_imp_df1.iloc[:10,:],x='norm_importance',y='feature')\n",
    "plt.subplot(1,2,2)\n",
    "plt.title('特征重要性累加图')\n",
    "plt.xlabel('特征个数')\n",
    "plt.ylabel('cum_importance')\n",
    "plt.plot(list(range(1, len(fea_names)+1)),fea_imp_df1['cum_importance'], 'r-')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "特征重要性为0的变量个数为 ：42\n",
      "['WeblogInfo_19_H', '_regstepid', '_ppdaiaccount', '_secondemail', '_relationshipid', '_residencetypeid', '_residenceyears', '_schoolname', '_phone', '_secondmobile', '_userid', '_webshoptypeid', '_webshopurl', 'SocialNetwork_17', '_phonetype', 'WeblogInfo_19_E', '_otherwebshoptype', '_orderid', 'WeblogInfo_21_C', 'WeblogInfo_19_G', '_age', '_byuserid', 'is_jilin_userinfo7', '_companyname', '_companysizeid', '_companytypeid', '_contactid', '_creationdate', '_dormitoryphone', '_flag_uctobcp', '_flag_uctopvr', '_graduatedate', 'is_weifang_UserInfo4', '_hasbusinesslicense', '_hasbuycar', '_hasppdaiaccount', '_hassborgjj', '_idaddress', 'WeblogInfo_19_J', 'is_weifang_UserInfo20', '_nickname', '_graduateschool']\n"
     ]
    }
   ],
   "source": [
    "# 剔除特征重要性为0的变量\n",
    "zero_imp_col = list(fea_imp_df1[fea_imp_df1.fea_importance==0].feature)\n",
    "fea_imp_df11 = fea_imp_df1[~(fea_imp_df1.feature.isin(zero_imp_col))]\n",
    "print('特征重要性为0的变量个数为 ：{}'.format(len(zero_imp_col)))\n",
    "print(zero_imp_col)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "特征重要性比较弱的变量个数为：33\n",
      "['china_telecom', '_companyphone', 'is_zibo_UserInfo4', 'WeblogInfo_19_I', '_marriagestatusid', 'is_tianjin_userinfo7', '_incomefrom', 'is_chengdu_UserInfo4', 'WeblogInfo_19_F', 'WeblogInfo_21_D', 'is_chengdu_UserInfo2', 'is_chengdu_UserInfo20', 'is_yantai_UserInfo2', 'is_zibo_UserInfo20', '_districtid', 'is_hunan_userinfo7', 'is_jilin_userinfo19', 'is_tianjin_userinfo19', 'WeblogInfo_21_A', '_provinceid', '_department', '_iscash', 'is_sichuan_userinfo19', '_educationid', '_residenceaddress', 'WeblogInfo_21_B', '_residencephone', 'is_sichuan_userinfo7', '_workyears', '_bussinessaddress', 'is_zibo_UserInfo8', '_position', '_gender']\n"
     ]
    }
   ],
   "source": [
    "# 剔除特征重要性比较弱的变量\n",
    "low_imp_col = list(fea_imp_df11[fea_imp_df11.cum_importance>=0.99].feature)\n",
    "print('特征重要性比较弱的变量个数为：{}'.format(len(low_imp_col)))\n",
    "print(low_imp_col)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(49701, 161)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 删除特征重要性为0和比较弱的特征\n",
    "drop_imp_col = zero_imp_col+low_imp_col\n",
    "mydf1 = df1.drop(drop_imp_col,axis=1)\n",
    "mydf1.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 加上训练集测试集状态，保存数据\n",
    "sample_status = list(df1.sample_status)\n",
    "mydf1['sample_status'] = sample_status\n",
    "mydf1['Idx'] = data_idx\n",
    "mydf1.to_csv('./feature_select_data1.csv',encoding='gb18030',index=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
